package com.bckj.fastboot.upms.api.service;

import com.bckj.fastboot.core.lang.model.PageResult;
import com.bckj.fastboot.upms.api.constant.UpmsConstant;
import com.bckj.fastboot.upms.api.dto.SysMenuQuery;
import com.bckj.fastboot.upms.api.dto.SysMenuRequest;
import com.bckj.fastboot.upms.api.dto.TreeSelect;
import com.bckj.fastboot.upms.api.vo.SysMenuVO;
import org.springframework.cloud.openfeign.FeignClient;

import org.springframework.web.bind.annotation.*;


import java.util.List;

/**
 * 菜单表(SysMenu)remote
 *
 * @author wfc
 * @since 2023-09-14 10:10:56
 */
@FeignClient(value = UpmsConstant.SERVICE_ID, contextId = "sysMenu", path = "/sysMenu")
public interface SysMenuRemoteService {

    /**
	 * 列表(分页)
	 *
	 * @param query req
	 * @return boolean
	 */
	@GetMapping("page")
	PageResult<SysMenuVO> page(SysMenuQuery query);
	
    /**
	 * 列表
	 *
	 * @param query req
	 */
	@GetMapping("list")
	List<SysMenuVO> list(SysMenuQuery query);
	
    /**
	 * 增加
	 *
	 * @param request req
	 * @return boolean
	 */
	@PostMapping()
	boolean save(@RequestBody SysMenuRequest request);

	/**
	 * 修改
	 *
	 * @param request req
	 * @return boolean
	 */
	@PutMapping()
	boolean update(@RequestBody SysMenuRequest request);

	/**
	 * 移除
	 *
	 * @param id id
	 * @return boolean
	 */
	@DeleteMapping("{id}")
	boolean remove(@PathVariable Long id);

	/**
	 * 详情
	 *
	 * @param id id
	 * @return vo
	 */
	@GetMapping("{id}")
	SysMenuVO details(@PathVariable Long id);

	/**
	 * 获取菜单树
	 * id 角色、用户id
	 * type 0角色1用户 为空则不勾选
	 * filter 0 全部 1 该登录用户有权的菜单树
	 * permsType 0 权限 1 展示
	 * permsFlag 0 全部 1 组的权限 2 自己的权限 3 自己过滤的权限
	 */
	@GetMapping("tree")
	TreeSelect tree(SysMenuQuery query);

	/**
	 * 初始化菜单的 keyIndex bitLocation
	 */
	@GetMapping("initKeyIndex")
	boolean initKeyIndex(SysMenuQuery query);
}
